/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 17655
 * Date: 2024-11-26
 * Time: 23:36
 */
public class test4 {
    /*
    LeetCode 38 外观数列
    「外观数列」是一个数位字符串序列，
    行程长度编码是一种字符串压缩方法，其工作原理是通过将连续相同字符（重复两次或更多次）替换为字符重复次数
    （运行长度）和字符的串联。例如，要压缩字符串 "3322251" ，我们将 "33" 用 "23" 替换，将 "222" 用 "32" 替换，
    将"5" 用 "15" 替换并将 "1" 用 "11" 替换。因此压缩后字符串变为 "23321511"。
     */
    public String countAndSay(int n) {
        String ret ="1";
        for(int i =1;i<n;i++){
            StringBuilder tmp = new StringBuilder();
            int len =ret.length();
            for(int left =0,right=0;right<len;){
                while(right<len&& ret.charAt(left)==ret.charAt(right)){
                    right++;
                }
                tmp.append(Integer.toString(right-left));
                tmp.append(ret.charAt(left));
                left = right;
            }
            ret=tmp.toString();
        }
        return ret;
    }
}
